using System.Collections.Generic;
using CodePlex.DnD4eCampaignManager.DnD4e;
using CodePlex.DnD4eCampaignManager.DnD4e.Interfaces;

namespace CodePlex.DnD4eCampaignManager.CampaignManagerTests.TestUtilities
{
    public static class DefaultTestObjects
    {
        public static IMonster TestMonster()
        {
            IMonster monster = new Monster(new Abilities(), new Defenses(), new HitPoints(), new Movement(), new Senses(), new Initiative())
                                   {
                                       Name = "Goblin Warrior",
                                       DefenseArmorClass = 15,
                                       AttackPowers = "Spear +6 vs. AC, d6",
                                       Conditions = "Ongoing Fire 5, save ends",
                                       HitPointsCurrent = 29,
                                       DefenseFortitude = 14,
                                       HitPointsMaximum = 60,
                                       InitiativeModifier = 5,
                                       InitiativeScore = 20,
                                       Tactics = "This guy is a bastard.  He fights dirty and will spit on you.",
                                       SpecialQualities = "Resist Fire 10",
                                       DefenseReflex = 17,
                                       DefenseWillpower = 20,
                                       HitPointsTemporary = 11,
                                       MovementSpeed = 6,
                                       MovementSpeedOther = "Climb 4",
                                       MovementStealth = 12
                                   };
            return monster;
        }

        public static IPlayerCharacter TestPlayerCharacter()
        {
            return new PlayerCharacter(new Defenses(), new Powers(), new Senses(), new Abilities(), new HealingSurges(new HitPoints()),
                                       new Initiative(), new Movement())
                       {
                           Name = "Conan",
                           DefenseArmorClass = 15,
                           Conditions = "Ongoing Fire 5, save ends",
                           HitPointsCurrent = 29,
                           DefenseFortitude = 14,
                           HitPointsMaximum = 60,
                           HitPointsTemporary = 2,
                           InitiativeScore = 20,
                           InitiativeModifier = 4,
                           Tactics = "Hits you with a sword. . .a lot!",
                           SpecialQualities = "Resist Fire 10",
                           DefenseReflex = 17,
                           DefenseWillpower = 20,
                           MovementSpeed = 6,
                           MovementStealth = 12,
                           HealingSurgesMaximum = 5,
                           HealingSurgesCurrent = 3,
                           HealingSurgeValue = 20,
                           AbilityStrength = 15,
                           AbilityIntelligence = 16,
                           AbilityDexterity = 17,
                           AbilityConstitution = 18,
                           AbilityWisdom = 19,
                           AbilityCharisma = 20,
                           CharacterAge = 27,
                           CharacterWeight = 190
                       };
        }

        public static StoryArc TestStoryArc()
        {
            return new StoryArc
                       {
                           ArcName = "Something Happens",
                           Description = "Well, then something happens...",
                           Locations = string.Empty,
                           NonPlayerCharacters = string.Empty,
                           Rewards = "Some gold and a magical ring",
                           Trigger = "The other thing happens",
                           ComponentArcNames = new List<string> { "Smaller Arc 1", "Smaller Arc 2" }
                       };
        }
    }
}